I/O APIC
=I/O APIC= Порты I/O APIC I/O APIC отображает свои порты в память по адресу По дефолту. 0 FEC0 0000h Первые два порта стандартных, а два других расширения и могут отсутствовать. Регистры I/O APIC Используя index и data можно получить доступ к регистрам контроллера. IOAPIC ID Для общения между APIC используется ID. Перед началом использования это поле должно быть запрограммировано. Этим делом занимается BIOS. IOAPIC Version Максимальное число в таблица преобразований(Redirection Table) по умолчанию 24, но может быть и больше. Таблица преобразований IRQ в сообщения Redirection Table- таблица преобразований это 24 вектора. Доступ к каждому вектору осуществляется по двум индексам 10h-11h 12h-13h … 3E-3Fh что в суме дает 64бита. При получении прерывания на соответствующую ногу APIC преобразует сигнал в сообщение, которое передает на шину APIC. Преобразует он согласно этой таблице. *63-56 биты R/W Destination — пункт назначения. Если бит 11 в этой структуре выставлен в 0 (Physical), тогда биты 59-56 определяются как APIC ID. При этом, биты 63-59 должны быть запрограммированы на 0. Если бит 11 в этой структуре выставлен в 1 (Logical), тогда биты 63-56 определяются как логический адрес назначения. *55-48 биты RO Extended Destination ID (EDID) —Расширенный адрес назначения. Эти биты отправляются в local APIC только когда процессор в режиме System Bus. Они становятся битами 11-4 адреса. *47-17 биты Резерв и должны быть 0. *16 бит R/W Mask —Маска. **0 = Не маскированы. Следовательно прерывание будет доставлено до пункта назначения **1 = Маскированы: Прерывания не будут доставляются до места назначения и не будут удерживаться до разрешения. При разрешении прерывания триггер сработает при приходе нового прерывания. *15 бит R/W Trigger Mode —режим триггера. Это поле определяет тип сигнала. Вернее то по которому будет вырабатываться прерывание. **0 = Edge triggered- запуск запросов фронтом. **1 = Level triggered- запросов уровнем. *14 бит R/W Remote IRR —. Этот бит используется для запросов прерывание уровнем. Это значит что для запросов фронтом значение не определено. **0= Сбрасывается в ноль, когда будет получено сообщение EOI от local APIC. **1= Устанавливается когда Local APIC/и одобрили прерывание запрошенное уровнем и отосланное I/O APIC. *13 бит R/W Interrupt Input Pin Polarity (INTPOL)—Поляризация контакта входа прерывания. Этот бит описывает поляризацию сигнала прерывания. **0=Высокий уровень, **1=низкий уровень активации. *12 бит RO Delivery Status (DELIVS)— Статус доставки. Этот бит содержит корректный статус о доставки прерывания. Этот бит предназначен только для чтения и запись в этот бит не в коей мери не повлияет. **0=IDLE бездействие (это возможное состояние не активное для этого прерывания). **1=Send Pending послано, ожидает завершения(для этого прерывания механизм посылки был инициирован, но посылка временно задержано APIC’ом по причине занятости шины или же принимающий APIC не может принять прерывание в данное время). *11 бит R/W Destination Mode (DESTMOD)—Способ доставки. Этот флаг определяет как будет интерпретироваться поле доставки( Destination field) Destination Mode IOREDTBLx11 Logical Destination Address **0, Physical Mode физический режим IOREDTBLx59:56 = APIC ID **1, Logical Mode логический режим IOREDTBLx63:56 = Набор процессоров set of. *10-8 Биты Delivery Mode (DELMOD)—Режим доставки. Режим доставки это 3 битное поле оно описывает, как получающий APIC должен реагировать на сигнал. The Delivery Mode is a 3 bit field that specifies how the APICs listed in the destination field should act upon reception of this signal. Note that certain Delivery Modes only operate as intended when used in conjunction with a specific trigger Mode. These restrictions are indicated in the following table for each Delivery Mode. 10:8 Дескриптор режима **000 Фиксированный/Fixed Доставляет этот сигнал до INTR вывода всех процессоров выбранных в качестве адреса получателя. Режим триггера для способа доставки "fixed" может быть как фронтом, так и уровнем. **001 Низкий приоритет / Lowest Priority Доставляет этот сигнал до INTR вывода всех процессоров, которые находятся в режиме низкого приоритета и указанны в списке адреса получателя. Режим триггера для режима доставки "lowest priority" может быть запрограммирован на запуск, как фронтом, так и уровнем. **010 SMI System Management Interrupt. Способ доставки аналогичен запросу SMI через контакт. Режим триггера установлен на запрос фронтом. Вектор должен быть запрограммирован в 0 для дальнейшей совместимости. **011 Резерв **100 NMI Доставляет этот сигнал до NMI вывода всех процессоров выбранных в качестве адреса получателя. Вектор прерывания игнорируется. NMI всегда обрабатывается, как запуск фронтом, даже если запрограммирован на запуск уровнем. Для добросовестности операции в его слоте, таблице преобразовании, нужно запрограммировать триггер на запуск фронтом. **101 INIT Доставляет этот сигнал до всех процессоров выбранных в качестве адреса получателя при помощи декларирования сигнала INIT. Тем самым все local APIC к которым произошло обращение будут находиться в INIT состоянии. Запуск INIT всегда обрабатывается, как запуск фронтом, даже если запрограммирован иначе. Для добросовестности операции в его слоте, таблице преобразовании, нужно запрограммировать триггер на запуск фронтом. **110 Резерв **111 ExtINT Доставляет этот сигнал прерывания до выводов INTR всех выбранных процессоров в адресе назначения. И распознается как прерывание возникшего от внешнего контроллера прерывания совместимого с 8259A. Ответный цикл INTA согласуется с доставкой ExtINT и перенаправляется к внешнему контроллеру, который выдает вектор прерывания. Способ доставки "ExtINT" требует установки режима триггера на запуск фронтом. *7-0 биты R/W Interrupt Vector (INTVEC)—вектор прерывания: Это поле содержит номер прерывания, его вектор. Может принимать значения от 10h до 0FEh. --Pavia 19:42, 12 января 2009 (MSK) Категория:Оборудование